Conversation
… & update changelog
…ndaries/lots of fix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
LLVM Backend Implementation (v0.21.x)
Here you can track the implementation progress !
There is a VERY strong chance that this plan will change, but for now, here is what I had initially planned
Bug fixes/other change they will be written in the changelog and not here
Foundation (v0.21.0-a -> v0.21.5-a)
1. Usable Backend (v0.21.3-a -> v0.21.5-a)
goal : write and debug very simple scripts (so that means small calculations, strings, conditions, loops, and functions)
!(v0.21.5-a)__aelys_str_eq(C, bootstrap only) (v0.21.5-a)==and!=for strings (v0.21.5-a)2. Stack Arrays
goal : arrays functional for real code
[T; N]alloca [N x T]with initialization stores3. Enums and Pattern Matching
goal : make proper error handling possible (inspired by rust)
matchexpression lowering to AIR4. Standard Library Bootstrap
goal : stdlib written in Aelys itself
5. GC Implementation
@no_gcor#6. Mini Borrow Checker
goal:
@no_gcmode is memory-safe too without GC overheadgoal²: not reimplement rust and actually make it the system easy for newcomers
&[T])Grand final
Architecture
flowchart TD A[User written .aelys code] --> B[Lexer] B --> C[Parser] C --> D[Semantical analysis and type inference] D --> AIR_LABEL[Aelys Intermediate Representation] D -. legacy path .-> V[Old Aelys Virtual Machine] AIR_LABEL --> L1 subgraph BUILD[AIR build] direction TB L1[Lower] --> L2[Layout] L2 --> L3[Monomorph] L3 -- rebuild when needed --> L1 end L3 --> P1 subgraph OPT[AIR opt passes] direction TB P1[Copy elim] --> P2[Dead locals] P2 --> P3[Other passes] P3 -- iterate until stable --> P1 end P3 --> G[LLVM codegen] G --> H[LLVM IR] H --> N[Native binary code from LLVM backend]